<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // // 对象属性的访问规则

        // function Person(name){
        //     this.name = name;
        // }
        // // 手动的修改原型(注意 修改原型不要使用对象.__proto__进行修改)
        // // 原型对象下增加属性
        // Person.prototype.name = '张三';
        // Person.prototype.age = 20;
        // // 将Person的原型对象给换掉
        // // Person.prototype = {
        // //     name:'张三',
        // //     age:20
        // // }

        // let p = new Person('小明');
        // console.log(p.name);//当前p对象下是存在name属性的，所以可以找到直接使用
        // console.log(p.age);//当前p对象下不存在age属性 由于存在__proto__属性，系统会自动的到原型下寻找age属性 能找到就直接使用

        // 2、赋值规则
        function Person(name){
            this.name = name;
        }
        // 手动的修改原型(注意 修改原型不要使用对象.__proto__进行修改)
        // 原型对象下增加属性
        Person.prototype.name = '张三';
        Person.prototype.age = 20;
        let p = new Person('小明');
        p.name = '小明2'; //当前对象下有name属性 将当前对象的属性进行修改
        p.age = 22; //当前对象下没有age属性，也不会去原型下修改，直接当前对象添加age属性
        console.log(p);
        // p.__proto__.height = 180;


    </script>
</body>
</html>